package Testdmo5;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:周次煜
 * Date: 2024-04-01
 * Time：10:47
 */
//public class J4_1 {

//    public static int evalRPN(String[] tokens) {
//        Stack<Integer> sk=new Stack<>();
//        for(int i=0; i< tokens.length;i++) {
//            if( tokens[i].equals("+") || tokens[i].equals("-") ||tokens[i].equals("*") ||tokens[i].equals("/")) {
//                char c=tokens[i].charAt(0);
//                int right=sk.pop();
//                int left=sk.pop();
//                switch (c) {
//                    case '+' :
//                        sk.push(left+right);
//                        break;
//                    case '-' :
//                        sk.push(left-right);
//                        break;
//                    case '*' :
//                        sk.push(left*right);
//                        break;
//                    case '/' :
//                        sk.push(left/right);
//                        break;
//                }
//
//            } else {
//                sk.push(Integer.valueOf(tokens[i]));
//
//            }
//        }
//
//        return sk.peek();
//    }
//
//    public static void main(String[] args) {
//        String []s1={"2","1","+","3","*"};
//        String []s2={"4","13","5","/","+"};
//        int ret=evalRPN(s2);
//        System.out.println(ret);
//    }



//}
//
//class MinStack {
//
//    Stack<Integer> stack;
//    Stack<Integer> minstack;
//
//    public MinStack() {
//        stack=new Stack<>();
//        minstack=new Stack<>();
//    }
//
//    public void push(int val) {
//        if (stack.size()==0) {
//            stack.push(val);
//            minstack.push(val);
//            return;
//        }
//
//        stack.push(val);
//        if (val<minstack.peek()) {
//            minstack.push(val);
//        }
//
//    }
//
//    public void pop() {
//        if(stack.size()==0) {
//            return;
//        }
//
//        int i=stack.pop();
//        if (i == minstack.peek()) {
//            minstack.pop();
//        }
//    }
//
//    public int top() {
//        if(stack.size()==0) {
//            return -1;
//        }
//
//        return  stack.peek();
//    }
//
//    public int getMin() {
//        if (minstack.size()==0) {
//            return  -1;
//        }
//
//        return minstack.peek();
//    }
//
//    public static void main(String[] args) {
//        MinStack ms=new MinStack();
//        ms.push(521);
//        ms.push(-1024);
//        ms.push(-1024);
//        ms.push(521);
//        ms.pop();
//        System.out.println(ms.getMin());
//        ms.pop();
//        System.out.println(ms.getMin());
//        ms.pop();
//        System.out.println(ms.getMin());
//    }
//}
//
//
//class Solution1 {
//    public static boolean isValid(String s) {
//        Stack<Character> st=new Stack<>();
//        for(int i=0; i< s.length(); i++) {
//            char c=s.charAt(i);
//            if(c=='('|| c=='{'|| c=='[') {
//                st.push(c);
//            } else {
//                if (st.size()==0) {
//                    return false;
//                }
////                if (st.size()==0) {
////
////                }
//                char ch=st.peek();
//                if(ch=='('&& c== ')'|| ch=='[' && c==']' || ch=='{' && c =='}') {
//
//                    st.pop();
//                } else {
//                    return false;
//                }
//            }
//        }
//
//        if (st.size() != 0) {
//            return false;
//        }
//        return true;
//    }
//
//    public static void main(String[] args) {
//        String s="(((((()";
//        System.out.println(isValid(s));
//    }
//}


// class Solution3 {
//    /**
//     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
//     *
//     *
//     * @param pushV int整型一维数组
//     * @param popV int整型一维数组
//     * @return bool布尔型
//     */
//    public static boolean IsPopOrder (int[] pushV, int[] popV) {
//        Stack<Integer> st=new Stack<Integer>();
//        int i=0,j=0;
//        while(i < pushV.length && j<popV.length ) {
//            if(pushV[i] != popV[j]) {
//                st.push(pushV[i]);
//                i++;
//            } else {
//                i++;
//                j++;
//            }
//
//            if (st.size() != 0) {
//
//                int m=st.peek();
//                if(m==popV[j]) {
//                    st.pop();
//                    j++;
//                }
//            }
//        }
//
//
//
//        while(j < popV.length) {
//            int x= st.peek();
//            if(x == popV[j]) {
//                st.pop();
//                j++;
//            } else {
//                return false;
//            }
//        }
//
//        return true;
//    }
//
//     public static void main(String[] args) {
//         int[] arr1={-6,15,4,17,7,14,0,9,13,16,18,10,3,1,2,19,8,12,5,11};
//         int [] arr2={-6,17,4,15,14,7,9,18,16,13,0,10,1,3,19,2,8,11,5,12};
//         System.out.println(IsPopOrder(arr1, arr2));
//     }
//}


//class Testdemo {
//        public static boolean IsPopOrder (int[] pushV, int[] popV) {
//            Stack<Integer> st = new Stack<Integer>();
//            int i = 0;
//                    int j = 0;
//            while (i < pushV.length && j < popV.length ) {
//                st.push(pushV[i]);
//
//
//                while( st.size() != 0 && j < popV.length && st.peek() == popV[j] ) {
//                    st.pop();
//                    j++;
//                }
//
//
//                i++;
//
//            }
//
//            if (st.size() != 0) {
//                return false;
//            }
//            return true;
//        }
//
//             public static void main(String[] args) {
//         int[] arr1={2,1,0};
//         int [] arr2={1,2,0};
//         System.out.println(IsPopOrder(arr1, arr2));
//     }
//
//}
    class MyStack {

        Queue<Integer> q1;
        Queue<Integer> q2;

        public MyStack() {
            q1=new LinkedList<>();
            q2=new LinkedList<>();
        }

        public void push(int x) {
            if (q1.isEmpty() && q2.isEmpty()) {
                q1.offer(x);
                return;
            }

            if (!q1.isEmpty() ) {
                q1.offer(x);
                return;
            }

            if (!q2.isEmpty()) {
                q2.offer(x);
                return;
            }

        }

        public int pop() {
            if (empty()) {
                return -1;
            }

            if (q1.isEmpty()) {
                int sz=q2.size();
                for (int i = 0; i < sz-1 ; i++) {
                    int n=q2.remove();
                    q1.offer(n);
                }

                return q2.remove();
            } else  {

                int sz=q1.size();

                for (int i = 0; i < sz-1 ; i++) {
                    int n=q1.remove();
                    q2.offer(n);
                }
                return q1.remove();
            }

        }

        public int top() {
            if (empty()) {
                return -1;
            }

            int x=pop();
            push(x);
            return  x;
        }

        public boolean empty() {
            return q1.isEmpty() && q2.isEmpty();
        }

    public static void main(String[] args) {
        MyStack ms=new MyStack();
        ms.push(1);
        ms.push(2);
        ms.push(3);
        System.out.println(ms.pop());
        System.out.println(ms.top());

        System.out.println(ms.pop());

    }
    }
